package ScalaStudy.chapter07

object test01_ImmutableArray {
  def main(args: Array[String]): Unit = {


    /////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////// 不可变数组 //////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////


    println("================= 1. 创建数组 =================")

    //1. 创建数组

    val arr: Array[Int] = new Array[Int](5)

    //另一种创建方式

    val arr0 = Array.apply(1,2,3,4,5)

    //2. 访问更改数组中的元素
    println("================= 2. 访问更改数组中的元素 =================")

    println(arr(0))
    println(arr(1))
    println(arr(2))
    println(arr(3))
    println(arr(4))

    arr(0) = 1
    arr(1) = 2
    arr(2) = 3


    println(arr(0))
    println(arr(1))
    println(arr(2))

    //3. 数组的遍历
    println("================= 3. 数组的遍历 =================")

    for(i <- 0 until arr.length) {
      println(arr(i))
    }

    println("================= 3. 数组的遍历2 =================")

    for(i <- arr.indices) {
      println(arr(i))
    }

    //其他for循环
    //直接遍历所有元素

    println("================= 3. 直接遍历所有元素 =================")

    for (elem <- arr) println(elem)

    println("================= 3. 迭代器进行遍历 =================")

    val iter = arr.iterator
    while (iter.hasNext)
      println(iter.next())

    println("================= 3. 调用foreach方法 =================")

    arr.foreach( (elem:Int) => println{elem} )

    println("================= 3. mkString方法 =================")

    println(arr.mkString("--"))

    //向数组当中添加元素

    println("================= 4. 在不可变数组中添加元素 =================")

    val arr1 = arr.:+(4)           // .:+ 表示追加到末尾
    println(arr1.mkString("-"))

    val arr2 = arr.+:(4)           // .:+ 表示追加到开头
    println(arr2.mkString("-"))

    val arr3 = arr :+ 4
    println(arr3.mkString("-"))    // :+ 表示追加到末尾

    val arr4 = 4 +: arr            //方向转换一下，追加开头
    println(arr4.mkString("-"))    // +: 表示追加到开头

  }
}

/////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////// 不可变数组 //////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
